package com.laoye.big_event.Controller;

import com.laoye.big_event.Pojo.Category;
import com.laoye.big_event.Pojo.Result;
import com.laoye.big_event.Service.CategoryService;
import com.laoye.big_event.Utils.ThreadLocalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/category")
public class CategoryController {
    @Autowired
    private CategoryService categoryService;
//    新增文章分类  请求参数格式：application/json
    @PostMapping
    public Result addCategory(@RequestBody @Validated(Category.Add.class) Category category) {
        categoryService.addCategory(category);
        return Result.success();
    }

//    获取文章分类列表   请求方式：GET 无请求参数
//    接口描述：该接口用于获取当前已登录用户创建的所有文章分类
//    泛型=主体返回数据
    @GetMapping
    public Result<List<Category>> getCategory() {
         ArrayList<Category> params=categoryService.selectBycreateUser();
//         data要求传递一个数组类型的参数
         return Result.success(params);
    }

//   获取文章分类详情  请求路径：/category/detail  请求方式：GET  请求参数格式：queryString
//    接口描述：该接口用于根据ID获取文章分类详情
    @GetMapping("detail")
    public Result<Category> selectById(@RequestParam int id) {
        Category category=categoryService.selectById(id);
        return Result.success(category);
    }

//    请求路径：/category   请求方式：PUT   接口描述：该接口用于更新文章分类  请求参数格式：application/json
    @PutMapping
    public Result updateCategory(@RequestBody @Validated(Category.Update.class) Category category) {
        if(categoryService.selectById(category.getId())==null){
            return Result.error("不存在该分类");
        }
        categoryService.updateCategory(category);
        return Result.success();
    }

//    请求路径：/category  请求方式：DELETE  接口描述：该接口用于根据ID删除文章分类  请求参数格式：queryString
    @DeleteMapping
    public Result deleteCategory(@RequestParam int id) {
        Category category=categoryService.selectById(id);
        if(category==null){
            return Result.error("分类不存在");
        }
        categoryService.deleteCategory(id);
        return Result.success();
    }

}
